package com.social.service;

import com.social.pojo.User;

import java.util.List;

/**
 * 用户管理
 */
public interface UserService {

    /**
     * 查询用户
     *
     * @param username 用户名
     * @return User对象
     */
    User selectByUsername(String username);

    /**
     * 查询用户
     *
     * @param username 用户名
     * @return User对象
     */
    User queryByUsername(String username);

    /**
     * 分页查所有
     *
     * @param page    当前页
     * @param pageNum 每页条数
     * @return 集合中的User对象
     */
    List<User> selectAll(Integer page, Integer pageNum);

    /**
     * 分页查用户
     *
     * @param page    当前页
     * @param pageNum 每页条数
     * @return 集合中的User对象
     */
    List<User> selectByUser(Integer page, Integer pageNum);

    /**
     * 查数量
     *
     * @return 数量
     */
    Integer selectCount();

    /**
     * 分页模糊查询数量
     *
     * @param realName     姓名
     * @param departmentId 岗位id
     * @return 模糊查询数量
     */
    Integer selectCountLike(String realName, String departmentId);

    /**
     * 分页模糊查询
     *
     * @param realName     姓名
     * @param departmentId 岗位id
     * @param page         当前页
     * @param pageNum      每页条数
     * @return 集合中的User对象
     */
    List<User> selectByUserLike(String realName, String departmentId, Integer page, Integer pageNum);

    /**
     * 查所有数量
     *
     * @return 数量
     */
    Integer selectAllCount();

    /**
     * 查所有
     *
     * @return 集合中的User对象
     */
    List<User> selectAlls();

    /**
     * 根据User primary key删除方法
     *
     * @param id User primary key
     * @return 删除状态
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 添加方法
     *
     * @param record User对象
     * @return 添加状态
     */
    int insert(User record);

    /**
     * 动态sql添加方法
     *
     * @param record User对象
     * @return 添加状态
     */
    int insertSelective(User record);

    /**
     * 根据User primary key查询
     *
     * @param id User primary key
     * @return User对象
     */
    User selectByPrimaryKey(Integer id);

    /**
     * 根据User对象修改
     *
     * @param record User对象
     * @return 修改状态
     */
    int updateByPrimaryKeySelective(User record);

    /**
     * 根据User对象修改
     *
     * @param record User对象
     * @return 修改状态
     */
    int updateByPrimaryKey(User record);
}
